package common.util;


import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexUtil {

    public static void main(String[] args) {
        String str = "百度检索总数:找到约20,700,000条相关结果";
        String regexp = "\\d";
        String nums = regexAll(str, regexp).toString();
        System.out.println(nums);
        System.out.println(regexAll(str, regexp));
        System.out.println(filterNAC(str));
    }

    //公用的匹配方法
    public static String regexOnce(String content, String regexp, int groupIndex) {
        String result = "";
        if (StringUtils.isEmpty(content)) {
            return result;
        }
        Matcher matcher = Pattern.compile(regexp).matcher(content);
        boolean flag = matcher.find();
        if (flag) {
            result = matcher.group(groupIndex);
        }
        return result;
    }

    //公用的匹配方法--匹配所有
    public static List<String> regexAll(String content, String regexp) {
        List<String> list = new ArrayList<>();
        Matcher matcher = Pattern.compile(regexp).matcher(content);
        while (matcher.find()) {
            String result = matcher.group();
            list.add(result);
        }
        return list;
    }


    /**
     * 匹配是否为数字
     */
    public static boolean isNumeric(String str) {
        Pattern pattern = Pattern.compile("[0-9]*");
        Matcher isNum = pattern.matcher(str);
        if (!isNum.matches()) {
            return false;
        }
        return true;
    }

    public static String filterNumber(String number) {
        number = number.replaceAll("[^(0-9)]", "");
        return number;
    }

    /**
     * @param alph
     * @return
     * @Title : filterAlphabet
     * @Type : FilterStr
     * @date : 2014年3月12日 下午7:28:54
     * @Description : 过滤出字母
     */
    public static String filterAlphabet(String alph) {
        alph = alph.replaceAll("[^(A-Za-z)]", "");
        return alph;
    }

    /**
     * @param chin
     * @return
     * @Title : filterChinese
     * @Type : FilterStr
     * @date : 2014年3月12日 下午9:12:37
     * @Description : 过滤出中文
     */
    public static String filterChinese(String chin) {
        chin = chin.replaceAll("[^(\\u4e00-\\u9fa5)]", "");
        return chin;
    }

    /**
     * @param character
     * @return
     * @Title : filter
     * @Type : FilterStr
     * @date : 2014年3月12日 下午9:17:22
     * @Description : 过滤出字母、数字和中文
     */
    public static String filterNAC(String character) {
        //String regexp = "[^\\u4e00-\\u9fa5^a-z^A-Z^0-9]";
        character = character.replaceAll("[^(a-zA-Z0-9\\u4e00-\\u9fa5)]", "");
        return character;
    }


}
